import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {PaginationComponent} from './components/pagination/pagination.component';
import {TableComponent} from './components/table/table.component';
import {BadgeComponent} from './components/badge/badge.component';
import {BreadcrumbComponent} from './components/breadcrumb/breadcrumb.component';
import {ChartComponent} from './components/chart/chart.component';
import {NumberInputComponent} from './components/number-input/number-input.component';
import {ProgressBarComponent} from './components/progress-bar/progress-bar.component';
import {SafeLinkComponent} from './components/safe-link/safe-link.component';
import {MessageService} from './message/message.service';
import {DynamicComponentDirective} from './directives/dynamic-component.directive';
import {SizeFixedDirective} from './directives/size-fixed.directive';
import {MouseDownUpDirective} from './directives/mouse-down-up.directive';
import {HttpClientModule} from '@angular/common/http';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {RouterModule} from '@angular/router';
import {BadgePipe} from './components/badge/badge.pipe';
import {ButtonComponent} from './components/button/button.component';
import {FileUploadComponent} from './components/file-upload/file-upload.component';
import {UnitPipe} from './pipes/unit';
import {ProgressBarService} from './components/progress-bar/progress-bar.service';
import {LoadingComponent} from './components/loading/loading.component';
import {SelectorComponent} from './components/selector/selector.component';
import {StepLineComponent} from './components/step-line/step-line.component';
import {ShowFormattedDataComponent} from './components/show-formatted-data/show-formatted-data.component';
import {ModalComponent} from './components/modal/modal.component';
import {AlertComponent} from './components/alert/alert.component';
import {PopoversComponent} from './components/popovers/popovers.component';
import {PopoverDirective} from './directives/popover.directive';
import {ClipboardDirective} from './directives/clipboard.directive';
import { DateAndTimeDirective } from './directives/date-and-time.directive';
import { DynamicComponentComponent } from './components/dynamic-component/dynamic-component.component';
import { MonitorPanelDynamicComponent } from './components/monitor-panel-dynamic/monitor-panel-dynamic.component';

@NgModule({
  imports: [
    CommonModule,
    BrowserAnimationsModule,
    HttpClientModule,
    FormsModule,
    ReactiveFormsModule,
    RouterModule
  ],
  declarations: [
    PaginationComponent,
    TableComponent,
    BadgeComponent,
    BreadcrumbComponent,
    ChartComponent,
    NumberInputComponent,
    ProgressBarComponent,
    SafeLinkComponent,
    DynamicComponentDirective,
    SizeFixedDirective,
    MouseDownUpDirective,
    ButtonComponent,
    FileUploadComponent,
    UnitPipe,
    BadgePipe,
    LoadingComponent,
    SelectorComponent,
    StepLineComponent,
    ShowFormattedDataComponent,
    ModalComponent,
    AlertComponent,
    PopoversComponent,
    PopoverDirective,
    ClipboardDirective,
    DateAndTimeDirective,
    DynamicComponentComponent,
    MonitorPanelDynamicComponent,
  ],
  exports: [
    PaginationComponent,
    TableComponent,
    BadgeComponent,
    BreadcrumbComponent,
    ChartComponent,
    NumberInputComponent,
    ProgressBarComponent,
    SafeLinkComponent,
    LoadingComponent,
    DynamicComponentDirective,
    SizeFixedDirective,
    MouseDownUpDirective,
    FileUploadComponent,
    UnitPipe,
    BadgePipe,
    SelectorComponent,
    StepLineComponent,
    ShowFormattedDataComponent,
    ModalComponent,
    AlertComponent,
    PopoversComponent,
    PopoverDirective,
    ClipboardDirective,
    DateAndTimeDirective,
    MonitorPanelDynamicComponent
  ],
  providers: [MessageService, BadgePipe, ProgressBarService],
  entryComponents: [
    SafeLinkComponent,
    BadgeComponent,
    ButtonComponent,
    ShowFormattedDataComponent,
    PopoversComponent,
    MonitorPanelDynamicComponent
  ],
})
export class NgToolsModule {
}
